/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sd_proj1.monSolution;

/**
 *
 * @author Pedro Costa Correia - 32795
 * @author Valter Pedro Lopes Vicente - 39360
 */
public class Message {

	/**
	 * Estados da dona da loja conforme fornecido no ficheiro de logger obrigatório
	 */
	public enum ownerStat {

		OPTS, WFNT, CLTS, DLPM, CBOP, ATAC
	}

	/**
	 * Estados dos clientes da loja conforme fornecido no logger obrigatório
	 */
	public enum customerStat {

		CODC, CSDO, AOID, BYSG
	}

	/**
	 *  Estados dos artesãos da oficina conforme fornecido no logger obrigatório
	 */
	public enum craftsmanStat {

		FTPM, CTTE, PANP, SIFT
	}

	/**
	 * Estados da loja conforme fornecido no logger obrigatório
	 *
	 */
	public enum storeStat {

		SPCL, SPOP, SDCL
	}
	/**
	 * Os diversos parâmetros a avaliar tal como fornecido no logger obrigatório
	 *
	 */
	private ownerStat oStat;
	private customerStat statCustomer1;
	private int BP0 = 0;
	private customerStat statCustomer2;
	private int BP1 = 0;
	private customerStat statCustomer3;
	private int BP2 = 0;
	private craftsmanStat statCraftsman1;
	private int PP0 = 0;
	private craftsmanStat statCraftsman2;
	private int PP1 = 0;
	private craftsmanStat statCraftsman3;
	private int PP2 = 0;
	private storeStat statShop;
	private int NCI = -1;
	private int SNPI = -1;
	private char PCR = '0';
	private char PMR = '0';
	private int APMI = -1;
	private int WNPI = -1;
	private int NSPM = -1;
	private int TAPM = -1;
	private int TNP = -1;

	/**
	 * Construtor de uma mensagem.
	 */
	public Message() {
	}

	public int getAPMI() {
		return APMI;
	}

	public int getBP0() {
		return BP0;
	}

	public int getBP1() {
		return BP1;
	}

	public int getBP2() {
		return BP2;
	}

	public int getNCI() {
		return NCI;
	}

	public int getNSPM() {
		return NSPM;
	}

	public char getPCR() {
		return PCR;
	}

	public char getPMR() {
		return PMR;
	}

	public int getPP0() {
		return PP0;
	}

	public int getPP1() {
		return PP1;
	}

	public int getPP2() {
		return PP2;
	}

	public int getSNPI() {
		return SNPI;
	}

	public int getTAPM() {
		return TAPM;
	}

	public int getTNP() {
		return TNP;
	}

	public int getWNPI() {
		return WNPI;
	}

	public ownerStat getEntrepStat() {
		return oStat;
	}

	public customerStat getstatCustomer1() {
		return statCustomer1;
	}

	public customerStat getstatCustomer2() {
		return statCustomer2;
	}

	public customerStat getstatCustomer3() {
		return statCustomer3;
	}

	public craftsmanStat getstatCraftsman1() {
		return statCraftsman1;
	}

	public craftsmanStat getstatCraftsman2() {
		return statCraftsman2;
	}

	public craftsmanStat getstatCraftsman3() {
		return statCraftsman3;
	}

	public storeStat getStatShop() {
		return statShop;
	}

	/**
	 * Definição do estado global do cliente.
	 * @param statCustomer Estado do cliente.
	 * @param BP Quantidade de produtos comprados pelo cliente.
	 * @param customerId Identificação do cliente.
	 */
	public void setstatCustomer(customerStat statCustomer, int BP, int customerId) {
		switch (customerId) {
			case 0: {
				this.statCustomer1 = statCustomer;
				this.BP0 = BP;
			}
			break;

			case 1: {
				this.statCustomer2 = statCustomer;
				this.BP1 = BP;
			}
			break;
			case 2: {
				this.statCustomer3 = statCustomer;
				this.BP2 = BP;
			}
			break;
		}
	}

	/**
	 * Definição do estado global do artesão.
	 * @param statCraftsman Estado do artesão.
	 * @param PP Quantidade de produtos fabricados pelo artesão.
	 * @param craftsmanId Identificação do artesão.
	 */
	public void setstatCraftsman(craftsmanStat statCraftsman, int PP, int craftsmanId) {
		switch (craftsmanId) {
			case 0: {
				this.statCraftsman1 = statCraftsman;
				this.PP0 = PP;
			}
			break;

			case 1: {
				this.statCraftsman2 = statCraftsman;
				this.PP1 = PP;
			}
			break;
			case 2: {
				this.statCraftsman3 = statCraftsman;
				this.PP2 = PP;
			}
			break;
		}
	}

	/**
	 * Definição do estado global da dona
	 * @param oStat Estado da dona.
	 */
	public void setOwnerStat(ownerStat oStat) {
		this.oStat = oStat;
	}

	/**
	 * Definição do estado global da dona
	 * @param NCI Número de clientes na loja.
	 * @param SNPI Quantidade de produtos em exposição.
	 * @param PCR Pedido de transferência de produtos.
	 * @param PMR Pedido de transferência de matérias primas.
	 */
	public void setShopStat(int NCI, int SNPI, char PCR, char PMR) {
		this.NCI = NCI;
		this.SNPI = SNPI;
		this.PCR = PCR;
		this.PMR = PMR;
	}

	/**
	 * Definição do estado da loja.
	 * @param statShop Estado da loja.
	 */
	public void setShopDoorStat(storeStat statShop) {
		this.statShop = statShop;
	}

	/**
	 * Definição do estado da oficina.
	 * @param APMI Quantidade de matérias primas existentes.
	 * @param WNPI Número de produtos actualmente na oficina.
	 * @param NSPM Número de remessas de matérias já realizadas.
	 * @param TAPM Total de matérias primas recebidas.
	 * @param TNP Acumulado da quantidade de produtos fabricados.
	 */
	public void setWorkShopStat(int APMI, int WNPI, int NSPM, int TAPM, int TNP) {
		this.APMI = APMI;
		this.WNPI = WNPI;
		this.NSPM = NSPM;
		this.TAPM = TAPM;
		this.TNP = TNP;
	}
}
